<?php

class CargaSemestral extends CFormModel {

    public $disciplina;
    public $diasSemana;
    public $finalidade;
    public $finalidadeText;
    public $recursos;
    public $horaIni;
    public $horaFim;
    public $capacidade;
    public $turma;
    public $ambientes = array();
    public $ambienteSelecionado;
    public $professor;
    public $indexes;

    public function rules() {
        // NOTE: you should only define rules for those attributes that
        // will receive user inputs.
        return array(
        );
    }

    public function attributeLabels() {
        return array(
        );
    }

    public function setAttributes($values, $safeOnly = true) {
        $this->disciplina = isset($values['disciplina']) ? $values['disciplina'] : '';
        $this->turma = isset($values['turma']) ? $values['turma'] : '';
        $this->diasSemana = isset($values['diasSemana']) ? $values['diasSemana'] : '';
        $this->finalidade = isset($values['finalidade']) ? $values['finalidade'] : '';
        $this->finalidadeText = isset($values['finalidadeText']) ? $values['finalidadeText'] : '';
        $this->recursos = isset($values['recursos']) ? $values['recursos'] : '';
        $this->horaIni = isset($values['horaIni']) ? $values['horaIni'] : '';
        $this->horaFim = isset($values['horaFim']) ? $values['horaFim'] : '';
        $this->capacidade = isset($values['capacidade']) ? $values['capacidade'] : '';
        $this->professor = isset($values['professor']) ? $values['professor'] : '';
        $this->ambienteSelecionado = isset($values['ambienteSelecionado']) ? $values['ambienteSelecionado'] : '';
    }

    public function getId(){
        return $this->disciplina.'-'.$this->turma;
    }
    
    private $sql = 'select a.* from ambiente a left outer join ambiente_uso au 
        on (a.id_ambiente = au.id_ambiente) left outer join uso u 
        on (au.id_uso = u.id_uso) left outer join ambiente_recurso ar 
        on (a.id_ambiente = ar.id_ambiente) left outer join recurso r 
        on (ar.id_recurso = r.id_recurso) ';
    public function findAmbientes(){
        $ambiente = new Ambiente();
        $where = '';
        //adicionar finalidade
        if ($this->finalidade != null){
            if ($where == ''){
                $where .= 'where ';
            }
            $where .= 'au.ID_USO = '.$this->finalidade;
        }
        if ($this->capacidade != null) {
            if ($where == '') {
                $where .= 'where ';
            } else {
                $where .= ' AND ';
            }
            $where .= 'a.NU_CAPACIDADE >= '.$this->capacidade;
        }
        if ($this->recursos != null) {
            $arrRec = explode('/', $this->recursos);
            foreach ($arrRec as $rec) {
                $arrRecQtde = explode('-', $rec);
                if ($where == '') {
                    $where .= 'where ';
                } else {
                    $where .= ' AND ';
                }
                $where .= '(exists (select 1 from ambiente_recurso inner join ambiente 
                        on (ambiente_recurso.id_ambiente = ambiente.id_ambiente) 
                        where ambiente_recurso.id_ambiente = a.id_ambiente 
                        and ambiente_recurso.id_recurso = ' . $arrRecQtde[0] . ' and ambiente_recurso.nu_quantidade >= ' . $arrRecQtde[1].'))';
            }
        }
        $where .= ' order by a.nu_capacidade asc';
        $this->ambientes = $ambiente->findAllBySql($this->sql.$where);
        
        if ($this->ambienteSelecionado != null){
            $this->ambienteSelecionado = $ambiente->findByPk($this->ambienteSelecionado);
        }
    }

}

?>
